//引入express模块
const express = require('express');
//引入连接池对象
const pool = require('../pool.js');
//创建路由器对象
const r = express.Router();

//1.用户注册接口(post /reg)
//接口地址：http://127.0.0.1:8081/v1/users/reg
//请求方式post
r.post('/reg',(req,res,next)=>{
	//接受post传递的参数
	var obj = req.body;
	//验证post传递的参数是否为空，
	if(!obj.uname){
		res.send({code:401,msg:'用户名不能为空！'});
		return;
	}
	if(!obj.upwd){
		res.send({code:401,msg:'密码不能为空！'});
		return;
	}
	if(!obj.email){
		res.send({code:401,msg:'邮箱不能为空！'});
		return;
	}
	if(!obj.phone){
		res.send({code:401,msg:'手机号码不能为空！'});
	}
	//检验手机号格式是否正确
	if(!/^1[3-9]\d{9}$/.test(obj.phone)){
		res.send({code:401,msg:'手机号码格式错误'});
		return;
	}
	//执行SQL命令
	pool.query('insert into xz_user set?',[obj],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.affectedRows === 0){
			res.send({code:402,msg:'注册失败'});
		}else{
			res.send({code:200,msg:'注册成功'});
		}
	});
});


//2.用户登录接口(post /login),密码的安全性
//接口地址：http://127.0.0.1:8081/v1/users/login
//请求方式：post
r.post('/login',(req,res,next)=>{
	//获取post传递的参数
	var obj = req.body;
	//检验post传递的参数是否为空
	if(!obj.uname){
		res.send({code:401,msg:'用户名不能为空'});
		return;
	}
	if(!obj.upwd){
		res.send({code:401,msg:'密码不能为空'});
		return;
	}
	//执行SQL命令
	pool.query('select * from xz_user where uname=? and upwd=?',[obj.uname,obj.upwd],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.length === 0){
			res.send({code:402,msg:'登录失败'});
			return;
		}else{
			res.send({code:200,msg:'登录成功',data:result});
			return;
		}
	});
});


//3.用户查找接口，根据uid查询用户(get /search/编号),路由传参
//接口地址：http://127.0.0.1:8081/v1/users/search/编号
//请求方法：get
r.get('/search/:uid',(req,res,next)=>{
	//获取路由传参的参数
	var obj = req.params;
	//执行SQL命令
	pool.query('select * from xz_user where uid=?',[obj.uid],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.length === 0){
			res.send({code:402,msg:'该用户不存在'});
			return;
		}else{
			res.send({code:200,msg:'查找成功',data:result});
			return;
		}
	});
});



//4.修改用户接口(put /update),相当于post传参
//接口地址：http://127.0.0.1:8081/v1/users/update
//请求方式：put
r.put('/update',(req,res,next)=>{
	//获取传递的参数
	var obj = req.body;
	//检验传递的参数是否为空，以及手机号码格式是否正确
	if(!obj.uid){
		res.send({code:401,msg:'用户编号不能为空'});
		return;
	}
	if(!obj.uname){
		res.send({code:401,msg:'用户名不能为空'});
		return;
	}
	if(!obj.email){
		res.send({code:401,msg:'邮箱不能为空'});
		return;
	}
	if(!obj.phone){
		res.send({code:401,msg:'手机号码不能为空'});
		return;
	}
	if(!/^1[3-9]\d{9}$/.test(obj.phone)){
		res.send({code:401,msg:'手机号码格式错误'});
		return;
	}
	if(!obj['user_name']){
		res.send({code:401,msg:'真实姓名不能为空'});
		return;
	}
	if(!obj.gender){
		res.send({code:401,msg:'性别不能为空'});
		return;
	}
	//执行SQL命令
	pool.query('update xz_user set? where uid=?',[obj,obj.uid],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.affectedRows === 0){
			res.send({code:402,msg:'用户修改失败'});
			return;
		}else{
			res.send({code:200,msg:'用户修改成功'});
		}
	});
});


//5.删除用户接口(delete /delete/编号)
//接口地址：http://127.0.0.1:8081/v1/users/delete/编号
//请求方法：delete (路由传参)
r.delete('/delete/:uid',(req,res,next)=>{
	//获取传递的参数
	var obj = req.params;
	//执行SQL命令
	pool.query('delete from xz_user where uid=?',[obj.uid],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.affectedRows === 0){
			res.send({code:401,msg:'用户删除失败'});
			return;
		}else{
			res.send({code:200,msg:'用户删除成功'});
		}
	});
});


//6.用户修改密码接口(put /updatePwd)
//接口地址：http://127.0.0.1:8081/v1/users/updatePwd
//请求方法：put  ,相当于post
r.put('/updatePwd',(req,res,next)=>{
	//获取传递的参数
	var obj = req.body;
	//检验传递的参数是否为空
	if(!obj.uid){
		res.send({code:401,msg:'用户编号不能为空'});
		return;
	}
	if(!obj.upwd){
		res.send({code:401,msg:'密码不能为空'});
		return;
	}
	if(!obj.upwdnew){
		res.send({code:401,msg:'请输入新密码'});
		return;
	}
	if(!obj.upwdconfirm){
		res.send({code:401,msg:'请确认密码'});
		return;
	}
	//验证两次输入的新密码是否一致
	if(obj.upwdnew !== obj.upwdconfirm){
		res.send({code:404,msg:'两次输入的密码不一致，请重新输入'});
		return;
	}
	//验证是否有该用户
	pool.query('select * from xz_user where uid=?',[obj.uid],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.length === 0){
			res.send({code:402,msg:'该用户不存在'});
			return;
		}
	});
	//验证密码输入是否正确
	pool.query('select * from xz_user where uid=? and upwd=?',[obj.uid,obj.upwd],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.length === 0){
			res.send({code:403,msg:'密码错误，请重新输入'});
			return;
		}
	});
	
	//执行SQL命令，进行修改
	pool.query('update xz_user set upwd=? where uid=?',[obj.upwdnew,obj.uid],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.affectedRows === 0){
			res.send({code:404,msg:'密码修改失败'});
			return;
		}else{
			res.send({code:200,msg:'密码修改成功'});
			return;
		}
	});

});


//7.检测用户名是否可用接口(get /checkUser/用户名)
//接口地址：http://127.0.0.1:8081/v1/users/checkUser/用户名
//请求方法：get 路由传参
r.get('/checkUser/:uname',(req,res,next)=>{
	//获取传递的参数
	var obj = req.params;
	//执行SQL命令查询用户名是否被占用
	pool.query('select * from xz_user where uname=?',[obj.uname],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.length === 0){
			res.send({code:200,msg:'用户名可用'});
			return;
		}else{
			res.send({code:402,msg:'用户名不可用'});
		}
	});
});


//8.检测邮箱是否可用(get /checkEmail/邮箱)
//接口地址：http://127.0.0.1:8081/v1/users/checkEmail/邮箱
//请求方法：get  路由传参
r.get('/checkEmail/:email',(req,res,next)=>{
	//获取传递的参数
	var obj = req.params;
	//执行SQL命令查询邮箱是否被占用
	pool.query('select * from xz_user where email=?',[obj.email],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.length === 0){
			res.send({code:200,msg:'邮箱可用'});
			return;
		}else{
			res.send({code:402,msg:'邮箱不可用'});
			return;
		}
	});
});


//9.检测手机号是否可用(get /checkPhone/手机号)
//接口地址：http://127.0.0.1:8081/v1/users/checkPhone/手机号
//请求方法：get  路由传参
r.get('/checkPhone/:phone',(req,res,next)=>{
	//获取传递的参数
	var obj = req.params;
	//检测手机号格式是否正确
	if(!/^1[3-9]\d{9}$/.test(obj.phone)){
		res.send({code:401,msg:'手机号码格式错误'});
		retrn;
	}
	//执行SQL命令查询手机号码是否被占用
	pool.query('select * from xz_user where phone=?',[obj.phone],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.length === 0){
			res.send({code:200,msg:'手机号码可用'});
			return;
		}else{
			res.send({code:402,msg:'手机号码不可用'});
			return;
		}
	});
});


//10.用户列表分页查询接口(get /searchPages?pno=1&count=5)
//接口地址：http://127.0.0.1:8081/v1/users/searchPages?pno=1&count=5
//请求方法：get
r.get('/searchPages',(req,res,next)=>{
	//获取传递的参数
	var obj = req.query;
	//验证参数是否为空
	if(!obj.pno){
		res.send({code:401,msg:'pno不能为空'});
		return;
	}
	if(!obj.count){
		res.send({code:401,msg:'count不能为空'});
		return;
	}
	//执行SQL命令查询数据
	pool.query('select * from xz_user limit ?,?',[Number(obj.pno),Number(obj.count)],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		if(result.length === 0){
			res.send({code:402,msg:'分页查询失败'});
			return;
		}else{
			res.send({code:200,msg:'查询成功',data:result});
			return;
		}
	});
});


//导出路由器对象
module.exports = r;